• OAuth2 會常被踢掉,使用給機器專用的 Service Account 就沒有這個麻煩,但你要學新觀念
    • OAuth2 會常被踢掉,使用給機器專用的 Service Account 就沒有這個麻煩,但你要學新觀念(圖:Gemini)
  • 網站服務用「帳密」認證,n8n 是個機器人不會輸入帳密,要設定 n8n「證書」(Credential),讓它代表你整合各種服務。我覺得 n8n + Google 服務如虎添翼,但 Google 的認證網站卻很「反人類」,導致上課總有學員卡關,本文詳解服務帳戶 ( Service Account ) 申請細節,就發現其實很簡單。
  • 你可把本文當小抄,忘了再查即可!隨着教課會持續更新,保持最新狀態。
  • Google 多種認證方式解析

    • Google 認證設定網址是「GCP,Google Cloud Console」,第一次用覺得是天書,久了以後,還是一樣~~,但它很有用啊!我們不求很懂,這裡教你最簡單的,就可以開始用好用的 Google 服務了。
    • Google 有 3 種認證方式:
      • API 金鑰(API Key) :這是最容易使用的,跟大部分服務類似,就是一長串文字貼進去就好了!可惜 Google 只有 Google Gemini 可用這麼好用的服務。
      • 開放授權協定 2.0(OAuth2) :這是好幾家科技公司合作制定的「授權標準協定」,包括 Google 和 Facebook 等,目的是讓人可以用大廠的帳號登入其他網站。例如「使用Google 認證登入 Line」。如果用它發現工作流突然放爛,很大機率是被 Google 踢掉了,這個服務代表你,權限與你相同。
      • 服務帳戶(Service Account) :顧名思義,這帳戶(Account)不是人用,而是「服務」(Service)用的,就是「『你的機器』對『 Google 的機器』」之間的認證。
      • 😁 第一次看到這個名稱是不是以為用這個帳戶就可獲得 Google 特別的服務?並不是!

    • 因為 n8n 是機器人,就是個「服務」,用「服務帳號」Service Account 讓服務有自己的帳號。
      • 授權對象 :針對「應用程式或服務」 ,而非個人使用者。
      • 流程 :為 n8n 建立一個專屬的「服務身分」。這個身分擁有自己的金鑰(通常是 JSON 格式),n8n 透過金鑰直接向 Google 驗證身分,並取得存取權。
      • 優點 :金鑰不會過期,且不受個人帳號密碼變更或停用的影響。一旦設定完成,它就能穩定地運作,非常適合後台自動化。
    • 重點就在「不會過期」,我們睡覺時,n8n 仍然在工作,憑證過期要一一重新登入,否則工作流不執行會出大麻煩,甚至捱罵!
  • 開始申請 Service Account

    • 分幾個步驟,從 Google Cloud Platform (GCP) 設定、n8n 的 Credential 設定,到授予權限,開始吧!
    • 接下來有幾個流程:
      • 登入 GCP
      • 新建或開啓專案
      • 啓用想用服務的 API
      • 建立服務帳戶
      • 產生金鑰
      • 到 n8n 建立憑證 (Credential)
    • 第一步:Google Cloud Platform (GCP) 設定

      • 這是最關鍵的一步,因為大部分的設定都在這裡完成。
      • 1. 建立一個新的 GCP 專案(Project)
      • 新增專案或選擇現有專案開啓 Service Account
        • 新增專案或選擇現有專案開啓 Service Account
        • 前往 Google Cloud Console
        • 點擊頂部的專案選擇器,選擇 New Project
        • 輸入一個有意義的專案名稱,例如 n8n-integrations,然後建立。
        • 2025/09/27 補充:最近 GCP 會跳出「$300 三個月試用優惠」訊息,要申請哦!沒使用不影響 Service Account 申請,但後續使用,就算免費服務都會跳出帳務錯誤訊息,很煩的。1

      • 2. 啟用必要的 API
      • 側邊欄進入啓用 API 服務
        • 按下「漢堡按鈕」打開側邊欄,進入啓用 API 服務,在此啓動一些 API 選擇加入需要的 API按下後可以選擇加入需要的 API 進入搜尋視窗,搜尋你需要的服務Google 服務近 500 種,所以要去搜尋你要開啓哪些服務,很多人問有沒有一個地方展示已經開啓了哪些服務?抱歉我還沒找到。 從搜尋結果找到你要用的服務從搜尋結果找到你要用的服務,搜尋時會跳出幾個建議選項,別急着按,因為它服務太多同名或類似服務很多,全部打完再搜尋,從結果裡選擇,急着打開可能會開到看起來是卻錯的服務,例如 Google Drive 就有 3 個服務,要打開看看選對的那個。 啓用這個服務的 API啓用這個服務的 API,如果顯示「啓用」(Enable) 就是還沒開啓,如果開啓了會顯示「管理」。
      • 根據你需要使用的 n8n 節點,搜尋並啟用對應的 API。
        • 每次打開 GCP 這個反人類的網站很麻煩,我建議你一次把常用服務的 API 都開好,那短期內不用回恐怖的 GCP 了,例如:

          • 雲端硬碟 Drive
          • 試算表 Sheets
          • 文件 Docs
          • 簡報 Slides
          • 郵件 Gmail
          • 通訊錄 People
          • 任務清單 Tasks
          • 行事曆 Calendar
      • 3. 建立服務帳號(Service Account)
      • 開啓 Service Account
        • 按下「漢堡按鈕」開啓左側選單,找到 IAM & Admin > Service Accounts ,建立服務帳戶 (Service Account) 填寫 Account 名稱,自取不限制在跳出的畫面先輸入服務帳號名稱,就是個名字可自取,例如 n8n-service-account,一定要是英文、數字,不能中文,然後點選 Create and Continue提供這個服務的存取權限,可以從上面搜尋提供這個服務的「存取權限」,這是 Service Account 最抽象的「權限」設定,因為機器人不是人類,不能到時候思考它能不能使用這個服務,所以要先幫它限制好。Grant this service account access to project 頁面,選擇一個角色(Role)。
        • 官方建議 :安全起見,給予最少但足夠的權限。例如,如果只用 Google Sheets,可以搜尋並選擇 Google Sheets EditorGoogle Sheets Reader。如果不確定,可以先選擇 Editor,之後再根據需求調整。
        • 實際使用:只有我一個人用時都給最高權限,免得卡住找不出原因時原來是權限不夠啊!如果你要讓別人用,還是保守一點好。
        • 如果你想要成為資安專家,這裏可以做到超細緻的設定,初學者就不用了。
      • 這可以忽略
        • Grant users access to this service account 頁面留空(因為你不需要其他人存取這個服務帳號),點選 Done你已經成功建立 Service Account 了現在,你已經成功建立 Service Account 了,就是圖中那個超長的 Email 帳號(實際上無法寄信),但還沒有取得金鑰,下一步來做。
      • 4. 產生服務帳號金鑰(JSON Key)
      • 有「帳號」就有「密碼」,前面你獲得「帳號」了,現在要來取得「密碼」。
        • 按下「漢堡按鈕」開啓左側選單,從 IAM & Admin > Service Accounts 回到服務帳戶 (Service Account) 頁面,點選你剛才建立的服務帳號名稱。 一開始會在「Detail」標籤頁,切換到「金鑰 」(Keys )標籤頁。 點選 Add Key > Create new key彈出視窗選擇 JSON 格式,然後點選 Create ,瀏覽器會下載一個 JSON 檔案。
      • 它下載的這個 JSON 檔包含你的服務帳號 Service Account 的「帳號」和「密碼」(金鑰)。請務必妥善保管,不要外洩!
        • 20250927 補充:JSON 檔不要刪除,儲存在一個你記得的位置。除了 n8n 外,如果想讓 AI 操作 Google Sheets 或 Docs 等服務,這些 MCP Server 通常要求提供 JSON 檔證明,而不是輸入帳密。

    • 第二步:n8n Credentials 設定

    • 第三步:授予服務帳號文件存取權限

      • 這一步是許多人容易忽略的關鍵步驟,也是 Service Account 和 OAuth2 最大的不同點。OAuth2 憑證已經代表你的個人身分,所以你個人能存取的檔案,n8n 就能存取。但 Service Account 是一個獨立的身分,你必須手動分享檔案給它。
      • 1. 複製服務帳號的電子郵件地址
        • 回到 GCP 控制台的 Service Accounts 頁面。
        • 你會看到你建立的服務帳號,例如 n8n-service-account@your-project-id.iam.gserviceaccount.com
        • 複製這個完整的電子郵件地址。
      • 2. 分享檔案給服務帳號
        • 打開你要讓 n8n 存取的 Google Sheets、Google Docs 或 Google Drive 資料夾。
        • 點選右上角的「共用」(Share)
        • 在分享彈窗中,將你剛才複製的服務帳號電子郵件地址貼上,並設定其權限(例如 Editor)。
        • 點選 Send
      • 完成以上三個步驟後,你的 n8n 流程就可以使用這個 Service Account Credential,穩定地存取被授權的 Google 服務與文件了。
  • Service Account 比較方便

    • n8n 告訴你大部分狀況下用 OAuth2 就足夠了,Google 也告訴你 OAuth2 很穩定,只有在很少情況下被踢掉。
    • 實際使用缺點超多:
      • n8n 每個服務都要重設新的 OAuth2 Credentials 超麻煩
      • 三不五時就會沒來由地被 Google 踢掉,而且每個使用者還要去 GCP 註冊很煩人
      • n8n 因此出錯不會回報,你也不知道你的服務沒運作,假如要收集出現一次就消失的數據,或是每天觸發固定的動作,例如備份檔案,服務沒啓動後果多慘。
    • 所以我不聽 n8n 和 Google 的,用 Service Account 吧!它難在 Google 的設定複雜、機器對機器的觀念不同:
      • 新增或開啓專案:別的網路服務都是進去就取得認證,但 Google 服務太多了,怎麼可能都用在同一個地方,所以要你建立專案管理(但實際上我所有服務都放同一個專案,除非你有個服務要收費,還是拆開,就有獨立的帳單)。
      • 開啓 API 服務:多數的服務只有少少幾個 API,直接勾選,但 Google 服務太多,需要搜尋引擎找出來一一開啓。
      • 超長的服務金鑰:一般的 API Key 只有幾十個字,它的服務金鑰是超長的上百字。
      • 分地區:因為 Google 提供的是全世界的服務,雖然多數服務不限制。
      • 產生怪怪的 Email:因為 Google 各服務內部用 Email 分享權限。
    • 你會發現,Google 這一套複雜是因為它把別人的服務放大了幾百倍,所以需要這麼高等級的管理,而複雜的 Google 混合複雜的 n8n,結果就是複雜到一塌糊塗。
    • 不過按照這個流程完工,你就可以好好享受 n8n 帶給你的方便了。
  • 附錄:從 Service Account 到 OAuth2

    • Service Account 雖然穩定,但有使用範圍,有些服務就是非得用 OAuth2 不可,例如 Gmail, YouTube。為什麼,我還搞不清楚原因,應該是 Google 政策問題吧!
    • 為了降低你的焦慮,這個範例是你前面已取得 Service Account 了,其實再多幾步就有 OAuth2 了!
    • 流程步驟Service Account 流程細節OAuth2 流程細節異同點分析
      第一步:建立專案1. 登入 Google Cloud Console。
      2. 建立新專案 (Project)。1. 同左
      2. 同左相似度:100%
      第二步:啟用 API1. 進入「API 和服務」 > 「資料庫」。
      2. 搜尋並啟用所需 API1. 同左
      2. 同左相似度:100%
      第三步:設定授權跳過 :Service Account 不需使用者介面,直接進入建立金鑰。設定 OAuth 同意畫面 (Consent Screen)
    • 1. 使用者類型:外部
    • 2. 填寫 App 名稱、使用者支援信箱
    • 3. Scope (權限範圍) ,加入 YouTube 相關權限。| 相似度:0%
    • 【NEW】 :OAuth2 獨有,讓使用者(你)點擊授權時,看到的畫面和權限列表
    • 第四步:建立憑證| 1. 進入「憑證」頁面
    • 2. 點擊「建立憑證」選擇:Service Account (服務帳戶) 。| 1. 同左
    • 2. 點擊「建立憑證」選擇**:OAuth 客戶端 ID**| 相似度:50%
    • 第五步:配置憑證| 1. 選擇 Service Account 名稱,設定角色權限
    • 2. 建立金鑰 (JSON 檔案)。
    • 3. 下載金鑰檔案| 1. 應用程式類型 : 選擇 「網頁應用程式」
    • 2. 授權重新導向 URI (Redirect URL) : 輸入 n8n 提供的特定 URL| 相似度:0%
    • OAuth2 最重要 Redirect URL ,讓 Google 知道授權完後要導回 n8n
    • 第六步:取得憑證| 取得 JSON 金鑰檔案 內含「超長 Email(ID) + Secret」| 取得 Client IDClient Secret| 相似度:50%
    • 第七步:n8n 連線| n8n 輸入超長 Email 和 Secret| 1. n8n 輸入 Client ID 和 Client Secret
    • 2. 點擊「Connect」跳轉 Google 登入並授權| 相似度:40%
    • OAuth2 須「使用者登入並點擊同意」
    • 完成 OAuth2 剩 3 步

      • 完成了 Service Account,那在 Google Cloud Console 中,只需完成 3 個關鍵步驟 ,就能取得 OAuth2 憑證:
        • 新增步驟:設定 OAuth 同意畫面 (Consent Screen)
          • 在 Google Cloud 的「API 與服務」>「OAuth 同意畫面」中,設定您的應用程式名稱和支援信箱。
        • 變更選項:建立 OAuth 客戶端 ID (Client ID)
          • 在「憑證」頁面中,選擇「建立憑證」時,請選擇 「OAuth 客戶端 ID」 而非「服務帳戶」。
        • 配置重點:設定授權重新導向 URI (Redirect URL)
          • 在建立 OAuth 客戶端 ID 時,您必須從 n8n 的 Credential 介面中取得一串網址(Redirect URL),並貼到 Google Cloud 的設定欄位中。
      • 完成這三步,您就會得到 n8n 要求的 Client IDClient Secret ,並可以進行最後的連線授權了!
  • 註解

    • Google 目的是要你填卡號,它承諾到期真的不會自動扣款(它被告商譽損失太大,丟不起這個臉),而且我們服務多半是免費的,就算填了卡號,也不會產生費用。如果你很在意卡號問題,可考慮改用其他服務,只是 Google 提供服務種類廣,拒用換別家,達成相同效果要申請很多帳號來補。 ↩︎
    • Google 提供很多 API,可粗略把 API 當作一個「功能」,n8n 幫你整合了。但還有很多 Google 服務沒被 n8n 整合,例如 Google Vision API 來辨識圖片文字,就要用萬用的「http request 節點」。如果沒勾這個選項,service account 用 HTTP Request 時就一直出錯。 ↩︎
    • 如果勾選了 Set up for use in HTTP Request node,要告訴它哪些服務的 API 准許使用,如果你勾選的超過我給你的範例,你可以問 AI 要怎麼填寫。 ↩︎

📚 相關文章